Modification start date
[BattleCats.git] / Assets / Scripts / Imported / Tilemap / Brushes / Coordinate Brush / Scripts / Editor / CoordinateBrush.cs
blob084358491665947072897d1c68c2a5c8f020dcb7
1 using System.Collections;
2 using System.Collections.Generic;
3 using UnityEngine;
5 namespace UnityEditor
7 [CustomGridBrush(true, false, false, "Coordinate Brush")]
8 public class CoordinateBrush : GridBrush {
9 public int z = 0;
11 public override void Paint(GridLayout grid, GameObject brushTarget, Vector3Int position)
13 var zPosition = new Vector3Int(position.x, position.y, z);
14 base.Paint(grid, brushTarget, zPosition);
17 public override void Erase(GridLayout grid, GameObject brushTarget, Vector3Int position)
19 var zPosition = new Vector3Int(position.x, position.y, z);
20 base.Erase(grid, brushTarget, zPosition);
23 public override void FloodFill(GridLayout grid, GameObject brushTarget, Vector3Int position)
25 var zPosition = new Vector3Int(position.x, position.y, z);
26 base.FloodFill(grid, brushTarget, zPosition);
29 public override void BoxFill(GridLayout gridLayout, GameObject brushTarget, BoundsInt position)
31 var zPosition = new Vector3Int(position.x, position.y, z);
32 position.position = zPosition;
33 base.BoxFill(gridLayout, brushTarget, position);
36 [MenuItem("Assets/Create/Coordinate Brush")]
37 public static void CreateBrush()
39 string path = EditorUtility.SaveFilePanelInProject("Save Coordinate Brush", "New Coordinate Brush", "asset", "Save Coordinate Brush", "Assets");
41 if (path == "")
42 return;
44 AssetDatabase.CreateAsset(ScriptableObject.CreateInstance<CoordinateBrush>(), path);
48 [CustomEditor(typeof(CoordinateBrush))]
49 public class CoordinateBrushEditor : GridBrushEditor
51 private CoordinateBrush coordinateBrush { get { return target as CoordinateBrush; } }
53 public override void PaintPreview(GridLayout grid, GameObject brushTarget, Vector3Int position)
55 var zPosition = new Vector3Int(position.x, position.y, coordinateBrush.z);
56 base.PaintPreview(grid, brushTarget, zPosition);
59 public override void OnPaintSceneGUI(GridLayout grid, GameObject brushTarget, BoundsInt position, GridBrushBase.Tool tool, bool executing)
61 base.OnPaintSceneGUI(grid, brushTarget, position, tool, executing);
62 if (coordinateBrush.z != 0)
64 var zPosition = new Vector3Int(position.min.x, position.min.y, coordinateBrush.z);
65 BoundsInt newPosition = new BoundsInt(zPosition, position.size);
66 Vector3[] cellLocals = new Vector3[]
68 grid.CellToLocal(new Vector3Int(newPosition.min.x, newPosition.min.y, newPosition.min.z)),
69 grid.CellToLocal(new Vector3Int(newPosition.max.x, newPosition.min.y, newPosition.min.z)),
70 grid.CellToLocal(new Vector3Int(newPosition.max.x, newPosition.max.y, newPosition.min.z)),
71 grid.CellToLocal(new Vector3Int(newPosition.min.x, newPosition.max.y, newPosition.min.z))
74 Handles.color = Color.blue;
75 int i = 0;
76 for (int j = cellLocals.Length - 1; i < cellLocals.Length; j = i++)
78 Handles.DrawLine(cellLocals[j], cellLocals[i]);
82 var labelText = "Pos: " + new Vector3Int(position.x, position.y, coordinateBrush.z);
83 if (position.size.x > 1 || position.size.y > 1) {
84 labelText += " Size: " + new Vector2Int(position.size.x, position.size.y);
87 Handles.Label(grid.CellToWorld(new Vector3Int(position.x, position.y, coordinateBrush.z)), labelText);